<?php
declare(strict_types=1);

namespace app\shop\library;

use think\facade\Log;
use Throwable;

class ShopLogHelper
{
    /**
     * 记录INFO日志
     * @param string       $message 标题
     * @param array|string $data    内容
     * @return void
     */
    public static function info(string $message, mixed $data = ''): void
    {
        if (is_array($data) && !empty($data)) {
            $data = ShopHelper::array_to_json($data);
        }

        if ($data) {
            $message .= PHP_EOL . $data;
        }

        Log::info($message);
    }

    /**
     * 记录ERROR日志
     * @param string         $message   标题
     * @param array          $data      内容
     * @param Throwable|null $exception 捕获到的异常(记录异常相关信息)
     * @return void
     */
    public static function error(string $message, array $data = [], Throwable $exception = null): void
    {
        $errData = [];
        if ($exception) {
            $errData = array_merge($errData, [
                'msg'  => $exception->getMessage(),
                'file' => $exception->getFile(),
                'line' => $exception->getLine(),
            ]);
        }
        if ($data) {
            $errData = array_merge($errData, $data);
        }

        if ($errData) {
            $message .= PHP_EOL . ShopHelper::array_to_json($errData);
        }

        Log::error($message);
    }
}